const express = require('express');
const router = express.Router();
const Role = require("../../../controllers/sys_roles.controller");

/**
 * @typedef roleBody
 * @property {string} name - 角色名称
 * @property {string} code - 角色标识
 * @property {boolean} status - 角色状态
 * @property {number} currentPage 当前页码
 * @property {number} pageSize 每页显示条数
 */
/**
 * 角色列表
 * @route POST /api/private/role
 * @group 角色管理
 * @security JWT
 * @param {roleBody.model} body.body - 请求参数
 * @returns {PageModel.model} 成功 返回列表
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/", Role.findAll);

/**
 * 新增角色
 * @route POST /api/private/role/add
 * @group 角色管理
 * @security JWT
 * @returns {rolesModel.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/add", Role.create);

/**
 * 修改角色
 * @route POST /api/private/role/edit
 * @group 角色管理
 * @security JWT
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/edit", Role.update);

/**
 * 删除角色
 * @route POST /api/private/role/delete
 * @group 角色管理
 * @security JWT
 * @param {object} body.body - 请求参数 角色 id 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/delete", Role.delete);

/**
 * 角色权限
 * @route POST /api/private/role/menus
 * @group 角色管理
 * @security JWT
 * @param {object} body.body - 请求参数 角色 id 必填
 * @returns {number[]} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/menus", Role.menus);

/**
 * 角色权限保存
 * @route POST /api/private/role/menus/save
 * @group 角色管理
 * @security JWT
 * @param {object} body.body - 请求参数 角色 id 和权限 value:[] 必填
 * @returns {ResponseMeta.model} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.post("/menus/save", Role.menusSave);

/**
 * 获取简洁角色 - 用于用户选择角色
 * @route GET /api/private/role/list
 * @group 角色管理
 * @security JWT
 * @returns {rolesModel[]} 成功
 * @returns {ResponseMeta.model} 错误异常
 */
router.get("/list", Role.list);



module.exports = router;